package com.xbongbong.saas.domain.dao;

import com.xbongbong.saas.domain.entity.SignInEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/4/1 11:33
 * @since v1.0
 */
@Repository
@Mapper
public interface SignInDao {

    Integer insert(SignInEntity signInEntity);

    Integer update(SignInEntity signInEntity);

    Integer deleteByKey(@Param("key") Long key, @Param("corpid") String corpid);

    List<SignInEntity> findEntitys(@Param("param") Map<String, Object> map);

    Integer getEntitysCount(@Param("param") Map<String, Object> map);

    List<Map<String, Object>> getStatistic(@Param("param") Map<String, Object> map);

    /**
     * 签到统计-客户数
     * 其中，返回的list为map合集，key: userId  value：客户数
     * @param param
     * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @author zcp
     * @date 2019/6/18 15:46
     * @since v1.0
     * @version v1.0
     */
    List<Map<String, Object>> getStatisticCustomer(@Param("param") Map<String, Object> param);

    /**
     * 获取签到人数
     * @param param
     * @return java.lang.Integer
     * @author zcp
     * @date 2019/6/18 15:45
     * @since v1.0
     * @version v1.0
     */
    Integer getUserCount(@Param("param") Map<String, Object> param);

    /**
     * 通过主键获取实体
     *
     * @param key    主键
     * @param corpid 公司id
     * @return SignInEntity
     * @author GuoJun.HU
     * @date 2019/4/19 11:10
     * @since V1.0
     */
    SignInEntity getByKey(@Param("key") Long key, @Param("corpid") String corpid);
    /**
     * @Description: 同步签到中的客户名称
     * @param corpid 公司id
     * @param customerId 客户id
     * @param customerName 客户新名称
     * 创建时间： 2018-2-1 下午2:02:35
     * 修改时间： 2018-2-1 下午2:02:35 chy
     * @author chy
     * @since v3.16
     * @version v3.16
     */
    void dataConsistencyUpdate(@Param("corpid") String corpid, @Param("customerId") Long customerId, @Param("customerName") String customerName);

    public Integer dataConsistencyUpdateUser(@Param("corpid") String corpId, @Param("userId") String userId, @Param("userName") String userName);

    /**
     * 批量更新签到数据
     *
     * @param updateList 签到列表
     * @param corpid 公司id
     * @throws
     * @return
     * @author hongxiao
     * @date 2020-11-13 16:22
     * @since
     * @version
     */
    void updateBatch(@Param("list") List<SignInEntity> updateList, @Param("corpid") String corpid);
    /**
     * 批量更新签到数据
     *
     * @param updateList 签到列表
     * @throws
     * @return
     * @author hongxiao
     * @date 2020-11-16 15:28
     * @since
     * @version
     */
    void updateBatchNoCorpid(@Param("list") List<SignInEntity> updateList);
}
